/**
 * 图片验证码token
 * @type {null}
 */
var token = null, lastAccount = '';

/**
 * 显示图片验证码
 */
function showCheckCode() {
    autumn.service.getImageCode(function (data) {
        $('#checkCodeImg').attr('src', 'data:image/png;base64,' + data.data);
        //记录图片验证码token
        token = data.token;
    });
}

/**
 * 绑定提交按钮事件和键盘回车事件
 */
function bindSubmitBtn() {
    $('#loginsubmit').click(function () {
        submit();
    });
    document.onkeydown = function () {
        if (event.keyCode == 13) {
            submit();
        }
    }
}

/**
 * 初始化用户名输入框，从cookie中获取用户名，如果没有，则置空
 */
function initUsenameBox() {
    var defaultUsername = $.cookie('GN-DefaultUserName');
    if (defaultUsername) {
        $('#loginname').val(defaultUsername);
        $(".user-name").css("display", "none")
        $('#password').focus();
    }
    ;
    if ($('#loginname').val() == "") {
        $(".user-name").css("display", "block")
    }
}

/**
 * 提交登录信息表单
 */
function submit() {
    var result = checkUsername() && checkPassword();
    if (result) {
        var loginInfo = {
            account: $('#loginname').val(),
            password: $('#password').val(),
            imageCode: $('#checkCodeBox').val(),
            imageCodeToken: token
        };
        lastAccount = loginInfo.account;
        autumn.service.login(loginInfo, function (data) {
            //登录成功
            $.cookie('GN-DefaultUserName', loginInfo.account, {path: "/", expires: 365});
            if (returnUrl) {
                location.href = returnUrl;
            } else {
                location.href = '/';
            }
        }, function (err) {
            //登录失败
            var isFirstShowCheckcode = false;
            if (err.code && err.code == 10061) {
                if ($('#checkCodeArea').css('display') == 'none') {
                    isFirstShowCheckcode = true;
                    $('#checkCode_error').html(err.message).show();
                }
                $('#checkCodeArea').show();
                $('#autoentry').css('margin-top', 0);
                showCheckCode();
            } else {
                $('#checkCodeArea').hide();
                $('#autoentry').removeAttr('style');
            }
            if (!isFirstShowCheckcode) {
                $('#loginpwd_error').html(err.message ? err.message : '网络出现异常').show();
                $('#password').focus();
            } else {
                $('#checkCodeBox').focus();
            }
        });
    }
}


/**
 * 检查用户名
 * @returns {boolean}
 */
function checkUsername() {
    var result = false;
    var username = $('#loginname').val();
    var loginError = $('#loginname_error');
    if (!username) {
        loginError.html('请输入用户名').show();
        $(".fore2 .text-area").css("margin-top", "42px")
    }
    else {
        result = true;
        loginError.hide();
        $(".fore2 .text-area").css("margin-top", "0")
    }
    return result;
}

/**
 * 检查登录密码
 * @returns {boolean}
 */
function checkPassword() {
    var result = false;
    var password = $('#password').val();
    var passwordError = $('#loginpwd_error');
    if (!password) {
        passwordError.html('请输入密码').show();
    }
    else {
        result = true;
        passwordError.hide();
    }
    return result;
};

/**
 * 聚焦
 */
function bindFocus() {
    $('#password').keydown(function () {
        $('#loginpwd_error').hide();
    });
    $('#loginname').keydown(function () {
        $('#loginpwd_error').hide();
    });
    $('#checkCodeBox').keydown(function () {
        $('#checkCode_error').hide();
    });
    $('#loginname').blur(function () {
        if ($(this).val() != loginname) {
            $('#checkCodeArea').hide();
            $('#autoentry').removeAttr('style');
        }
    });
}

/**
 * 初始化
 */
$(function () {
    bindSubmitBtn();
    initUsenameBox();
    bindFocus();
});
